/**
 * IUserFavoriteService
 *
 * 主要职责：
 * - 用户收藏的增删查
 *
 * 实现关注点：
 * - 唯一索引保障幂等、计数更新策略（Redis + 异步同步）
 *
 * 答辩要点：
 * - 如何在并发场景保证收藏计数正确
 */
package net.zjitc.yqmusicserver.service;

import com.baomidou.mybatisplus.extension.service.IService;
import net.zjitc.yqmusicserver.domain.UserFavorite;
import net.zjitc.yqmusicserver.domain.dto.PlaylistDTO;
import net.zjitc.yqmusicserver.domain.dto.SongDTO;
import net.zjitc.yqmusicserver.domain.vo.PlaylistVO;
import net.zjitc.yqmusicserver.domain.vo.SongVO;
import net.zjitc.yqmusicserver.result.PageResult;
import net.zjitc.yqmusicserver.result.Result;

/**
 * @author 罗翼侨
 * @date 2025/6/17 13:53
 */
public interface IUserFavoriteService extends IService<UserFavorite> {
    // 获取用户收藏的歌曲列表
    Result<PageResult<SongVO>> getUserFavoriteSongs(SongDTO songDTO);

    // 收藏歌曲
    Result collectSong(Long songId);

    // 取消收藏歌曲
    Result cancelCollectSong(Long songId);

    // 获取用户收藏的歌单列表
    Result<PageResult<PlaylistVO>> getUserFavoritePlaylists(PlaylistDTO playlistDTO);

    // 收藏歌单
    Result collectPlaylist(Long playlistId);

    // 取消收藏歌单
    Result cancelCollectPlaylist(Long playlistId);
}
